public class code03 {
//    力扣 150 将有序数组转换为二叉搜索树
public TreeNode sortedArrayToBST(int[] nums) {
    // 所谓二叉搜索树，左子树的节点值一定比根节点小，右子树的值一定比根节点大
    // 先序遍历是该数组当前的递增形式，将数组从中间分割则是当前数组的中序遍历的形式
    // 这道题目，可以通过中序遍历的形式来构造出这个平衡二叉树
    // 直接从当前 nums 的中间位置进行二分，将每一层递归的中间值作为根节点
    return centrt(nums, 0, nums.length - 1);
}

    private TreeNode centrt(int[] nums, int left, int right) {
        // 设置返回条件
        if(left > right) {
            return null;
        }

        // 找到数组的中间值作为根节点
        int mid = (left + right) / 2;

        TreeNode root = new TreeNode(nums[mid]);
        // 构建左子树
        root.left = centrt(nums, left, mid - 1);
        root.right = centrt(nums, mid + 1, right);
        return root;
    }
}
